package lispinterpreter;

import java.util.HashMap;

public class BlackBox {

    HashMap<LispAtom, LispList> map = new HashMap<LispAtom, LispList>();

    public void evaluate(LispList instructionSet) {

	if (instructionSet.isAtom) {
	    evaluateAtom((LispAtom) instructionSet);
	} else {
	    // La instrucción tiene que estar compuesta por tres
	    // LispLists
	    LispAtom lispComand = (LispAtom) instructionSet
		    .getAndRemoveFirstElement();
	    LispAtom lispVariable = (LispAtom) instructionSet
		    .getAndRemoveFirstElement();
	    LispList lispOperands = instructionSet.getAndRemoveFirstElement();

	    if (lispComand.satom.equals("setf"))
		setf(lispVariable, lispOperands);
	}
    }

    private void setf(LispAtom lispVariable, LispList lispOperands) {
	map.put(lispVariable, lispOperands);
	System.out.println(map.get(lispVariable));
    }

    private void evaluateAtom(LispAtom atom) {
	LispAtom objectKey = atom;
	LispList mapedOperands = map.get(objectKey);
    }

}
